/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package WS;

import Mensajes.*;
import Persistencia.conexionBD;
import javax.jws.WebService;
import javax.jws.WebMethod;
import javax.jws.WebParam;

/**
 *
 * @author Administrador
 */
@WebService(serviceName = "WSLab")
public class WSLab {

    /**
     * This is a sample web service operation
     */
    @WebMethod(operationName = "Execute")
    public String Execute(@WebParam(name = "OrdenLaboratorio") String hl7) {
        String NL = "\r";
        String respuesta = "";


        try {
            if (ValidadorEnvioHL7.validarMsj("OML^021", hl7)) {

                String[] obr = hl7.split("OBR\\|")[1].split("\\|");

                Orden orden = new Orden();
                orden.setIdOrden(Integer.parseInt(hl7.split("\\|")[9]));
                orden.setOsId(Integer.parseInt(obr[1].split(";")[1]));
                orden.setIndicId(Integer.parseInt(obr[1].split(";")[2]));
                orden.setEstudioId(Integer.parseInt(obr[3].split("-")[0]));
                orden.setNroDocumento(hl7.split("PID\\|")[1].split("\\|")[2].split("\\^")[0]);
                orden.setFechaHora(obr[5]);
                orden.setMsjHl7(hl7);

                respuesta = "MSH|^~\\&|GEOSALUD||ADT|" + orden.getIdOrden() + "|" + orden.getFechaHora() + "||ACK||P|2.5" + NL;
                if (conexionBD.insert(orden) == 0) {
                    respuesta += "MSA|AR|7||1";
                } else {
                    respuesta += "MSA|AA|0||1";
                }
                conexionBD.log("Respuesta", respuesta, "Envio Respuesta", orden.getIdOrden());

            } else {

                conexionBD.log("NuevaOrden", hl7, "Error. falta algun dato", Integer.parseInt(hl7.split("\\|")[9]));
                respuesta = "MSH|^~\\&|GEOSALUD||ADT|" + hl7.split("\\|")[9] + "|" + hl7.split("\\|")[6] + "||ACK||P|2.5" + NL
                        + "MSA|AE|99||1";

            }
        } catch (Exception e) {
            e.printStackTrace();
            conexionBD.log("NuevaOrden", hl7, "Error. falta alguna linea", Integer.parseInt(hl7.split("\\|")[9]));
            respuesta = "MSH|^~\\&|GEOSALUD||ADT|" + hl7.split("\\|")[9] + "|" + hl7.split("\\|")[6] + "||ACK||P|2.5" + NL
                    + "MSA|AE|99||1";
        }
        return respuesta;
    }
    /**
     * This is a sample web service operation
     */
    /*
     * @WebMethod(operationName = "ResultadoLaboratorio") public String
     * ResultadoLaboratorio(@WebParam(name = "hl7") String hl7) {
     *
     * String[] obr = hl7.split("OBR\\|")[1].split("\\|");
     *
     * Orden orden = new Orden();
     * orden.setIdOrden(Integer.parseInt(hl7.split("\\|")[9]));
     * orden.setOsId(Integer.parseInt(obr[1].split(";")[1]));
     * orden.setIndicId(Integer.parseInt(obr[1].split(";")[2]));
     * orden.setEstudioId(Integer.parseInt(obr[3].split("-")[0]));
     * orden.setNroDocumento(hl7.split("PID\\|")[1].split("\\|")[2].split("\\^")[0]);
     * orden.setFechaHora(obr[5]); orden.setMsjHl7(hl7);
     *
     * String NL = System.getProperty("line.separator"); String respuesta =
     * "MSH|^~\\&|GEOSALUD||ADT|" + orden.getIdOrden() + "|" +
     * orden.getFechaHora() + "||ACK||P|2.5" + NL;
     *
     * if (conexionBD.insert(orden) == 0) { respuesta += "MSA|AR|7||1"; } else {
     * respuesta += "MSA|AA|0||1"; } conexionBD.log("Respuesta", respuesta,
     * "Envio Respuesta", orden.getIdOrden()); return respuesta;
    }
     */
}
